/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ec.edu.espe.distribuidas.aseguradora.servicio;

import ec.edu.espe.distribuidas.aseguradora.dao.PolizaFacade;
import ec.edu.espe.distribuidas.aseguradora.exception.ErrorValidacionException;
import ec.edu.espe.distribuidas.aseguradora.modelo.Poliza;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

/**
 *
 * @author alejandro
 */
@Stateless
@LocalBean
public class PolizaServicio {
    @EJB
    private PolizaFacade polizaFacade;
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void crear(Poliza poliza){
        Poliza polizaTmp=this.polizaFacade.find(poliza.getNumDocumento());
        if(polizaTmp==null){
            this.polizaFacade.create(poliza);
        }else{
            System.err.println("Codigo de la poliza  ya registrado."+polizaTmp.getNumDocumento());
            ErrorValidacionException evex=new ErrorValidacionException("El codigo que ingreso  no esta registrado");
            throw evex;
            
        }
        
        
    }
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void modificar(Poliza poliza){
            this.polizaFacade.edit(poliza);
    }
    
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void eliminar(String numeroDocumento){
        Poliza polizaTmp=this.polizaFacade.find(numeroDocumento);
        if(polizaTmp!=null){
            this.polizaFacade.remove(polizaTmp);
        }else{
            System.err.println("No existe cliente con el codigo especificado"+numeroDocumento);
        }
        
    }
    
    public List<Poliza>  obtenerTodos(){
        return this.polizaFacade.findAll();
    }
    
    public Poliza buscarPorCodigo(String codigo){
        return this.polizaFacade.find(codigo);
    }
      public List<Poliza> buscarPorCliente(String codigo){
        return this.polizaFacade.findCli(codigo);
    }
    
    
    
}
